/*
 * @Descripttion: 
 * @version: 
 * @Author: ada.wu
 * @Date: 2023-11-03 23:35:56
 * @LastEditors: ada.wu
 * @LastEditTime: 2023-11-05 15:26:38
 */
import Mock from 'mockjs'

/**
 * SystemMock 模拟数据
 */
class SystemMock {

    course(option) {
        let param = this.parseOption(option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                totalCount: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'list|1-10': [
                    {

                        'id': '@increment', // 大楼ID
                        'name': '课程@integer(100,999)',//专业
                        'academyId': '@increment',//所属学院
                        'academyName': '测试学院@integer(100,999)',//所属学院
                        "majorId": '@increment',
                        "majorName": '测试专业@integer(100,999)',
                        "Introduction": "××××××××××××××",
                        "roomId": 1,
                        "degreeType": 1,
                        "courseType": "校公开课",
                        "semesterId": 1,
                        "classWeek": [1, 2, 3, 4, 5, 6],
                        "weekday": 1,
                        "classId": 1


                    }
                ],
            },
        })
    }
    major(option) {
        let param = this.parseOption(option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                totalCount: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'list|1-10': [
                    {
                        'id': '@increment', // 大楼ID
                        'name': '测试专业@integer(100,999)',//专业
                        'academyId': '@increment',//所属学院
                        'academyName': '测试学院@integer(100,999)',//所属学院
                        'actionTime': '@datetime("yyyy-MM-dd HH:mm:ss")', // 报修时间
                    }
                ],
            },
        })
    }
    teacher(option) {
        let param = this.parseOption(option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                totalCount: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'list|1-10': [
                    {
                        'id': '@increment', // id
                        'academyId': '@increment', //选择学院
                        'academyName': '测试学院@integer(100,999)', //选择学院
                        'teacherName': '@cname',//教师姓名
                        'teacherJobNum': '@string("lower", 5)',//教师工号
                        'actionTime': '@datetime("yyyy-MM-dd HH:mm:ss")', // 

                    }
                ],
            },
        })
    }
    student(option) {
        let param = this.parseOption(option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                totalCount: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'list|1-10': [
                    {
                        'id': '@increment', // id
                        'academyId': '@increment', //选择学院
                        'academyName': '测试学院@integer(100,999)', //选择学院
                        'studentName': '@cname',//教师姓名
                        'studentJobNum': '@string("lower", 5)',//教师工号
                        'actionTime': '@datetime("yyyy-MM-dd HH:mm:ss")', // 

                    }
                ],
            },
        })
    }
    academy(option) {
        let param = this.parseOption(option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                totalCount: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'list|1-10': [
                    {
                        'id': '@increment', // 大楼ID
                        'name': '测试学院@integer(100,999)',//资源地址
                        'actionTime': '@datetime("yyyy-MM-dd HH:mm:ss")', // 报修时间
                    }
                ],
            },
        })
    }
    building(option) {
        let param = this.parseOption(option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                totalCount: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'list|1-10': [
                    {
                        'id': '@increment', // 大楼ID
                        'campusId': '@increment',//资源地址
                        'campusName': '@string("upper", 1)区',//资源地址
                        'name': '教学楼@integer(100,999)',//资源地址
                        'actionTime': '@datetime("yyyy-MM-dd HH:mm:ss")', // 报修时间
                    }
                ],
            },
        })
    }
    campus(option) {
        let param = this.parseOption(option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                totalCount: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'list|1-10': [
                    {
                        'id': '@increment', // 大楼ID
                        'name': '@string("upper", 1)区',//资源地址
                        'actionTime': '@datetime("yyyy-MM-dd HH:mm:ss")', // 报修时间
                    }
                ],
            },
        })
    }
    address(option) {
        let param = this.parseOption(option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                totalCount: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'list|1-10': [
                    {
                        'id': '@increment', // 大楼ID
                        'address': 'http://资源地址/文件名@integer(100,999)',//资源地址
                        'state': '@integer(0,1)',//状态
                        'actionTime': '@datetime("yyyy-MM-dd HH:mm:ss")', // 报修时间
                    }
                ],
            },
        })
    }
    topic(option) {
        let param = this.parseOption(option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                totalCount: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'list|1-10': [
                    {
                        'id': '@increment', // 大楼ID
                        'topicName': '课程思政@integer(100,999)',//大楼名称
                        'topicType': '课程思政@integer(100,999)',//大楼名称
                        'actionTime': '@datetime("yyyy-MM-dd HH:mm:ss")', // 报修时间
                    }
                ],
            },
        })
    }
    

    room(option) {
        let param = this.parseOption(option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                totalCount: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'list|1-10': [
                    {
                        'id': '@increment', // 教室ID
                        'campusId': '@increment', // 校区名称
                        'name': '测试教室@integer(1,8)',//教室名称
                        'campusName': '@string("upper", 1)区',//资源地址
                        'buildingId': '@increment', // 教学楼
                        'buildingName': '教学楼@integer(100,999)', // 教学楼
                        'recordingIp': '@ip', //录播主机 IP
                    }
                ],
            },
        })
    }
    
    unlegal(option) {
        let param = this.parseOption(option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                totalCount: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'list|1-10': [
                    {
                        'id': '@increment', // 教室ID
                        'name': '类型@integer(1,8)',//教室名称
                    }
                ],
            },
        })
    }

    
    // 解析参数 option= {url:'/api/read?id=1', type:'GET', data:null}
    parseOption(option) {
        let param = {}
        if (option.url.indexOf('?') > -1) {
            new URLSearchParams(option.url.substring(option.url.indexOf('?') + 1)).forEach((v, k) => {
                param[k] = v;
            })
        }
        if (option.body) {
            if (option.body instanceof FormData) {
                option.body.forEach((v, k) => {
                    param[k] = v;
                })
            } else {
                param = JSON.parse(option.body);
            }
        }
        // 可以通过传参 _success 来控制返回消息的成功状态。默认返回成功消息。
        if (typeof (param._success) != 'boolean') {
            param._success = true;
        }
        return param;
    }

    // 返回标准消息对象
    stdMessage(success, message, data = '', code = 0) {
        return {
            success: success,
            message: message,
            data: data,
            code: code,
        }
    }
}

export default new SystemMock;